Intel SGX
概要
メモリ上に Enclave を生成する CPU の拡張機能
Enclave : 秘密データ保護とプログラム実行が可能な暗号的に厳重に保護された領域
悪意あるプラットフォームの上でも信頼できる実行環境 ( Enclave ) を提供する
詳細
Intel SGX で防げる攻撃
プロセス内攻撃
メモリへのアクセスが厳重に制限されているため容易く弾く
OS 及びハイパーバイザによる攻撃
ハイパーバイザ : ホストOSを必要としないタイプの仮想マシンを作って動かすためのソフト
特殊な手続きによって生成される専用のコードによってのみ Enclave の特殊な命令セットを動かせる
そもそも OS を信頼していない
CPU以外のハードウェアへの攻撃
メモリを対象としたコールドブート攻撃など
Enclave 内のデータは暗号化されているため生のデータは得られない
Intel SGX で防げない攻撃
サイドチャネル攻撃
実行時間計測によるサイドチャネル攻撃
キャッシュヒット率を計測してのサイドチャネル攻撃
Intel SGX における制限
無条件で信頼しなければいけないもの
Intel のサーバ
Intel 製 CPU パッケージ内の全てが保護されていること
SGXにより形成される Architectural Enclave という特殊な Enclave 群
Architectural Enclave (AE)
Enclave 内で駆動するプログラムはユーザーモード権限のみ
システムコールの使用が不可能
代わりに Intel が用意した tlibc 及びtlibcxx という専用のライブラリを用いる
これらは C/C++ のライブラリとして SGX が唯一使用を許可している
Enclave のサイズは基本 128 MB
うち 96 MB がユーザーが自由に使用可能
認証プロトコル ( Attestation )
Local Attestation ( LA )
同一マシン上に存在する Enclave 同士が本当に同じマシン上で動作しているかを検証するためのプロトコル
互いに相手の MRENCLAVE を使用して検証する
Remote Attestation ( RA )
コンセプト
非 SGX 側が SGX 側の CPU と Enclave が SGX としての完全性を保っているかどうかの検証
非 SGX 側と SGX 側の安全なデータ送受信のため共通鍵の鍵交換を行う ( TLS セッションを確立する )
認証のベースは楕円曲線ディフィーヘルマン鍵共有プロトコル
楕円曲線暗号を用いたディフィーヘルマン鍵共有プロトコル
信頼できない通信路上で公開鍵暗号を用いて共通鍵を共有するためのプロトコル
公開鍵暗号には楕円曲線暗号を用いる
「自分の公開鍵と相手の秘密鍵の積 = 自分の秘密鍵と相手の公開鍵の積」となる特性
https://gyazo.com/5df2478bf40b3d44ff25e77815f74d72
非 SGX 側 : SP ( Service Provider )
SGX 側 : ISV ( Independent Software Vendor )
$ ( P_\alpha , n_\alpha ) : ( 公開鍵 , 秘密鍵 )
RA = 楕円曲線ディフィーヘルマン鍵共有プロトコル + ISV を検証する仕組み
ISV の CPU 及び Enclave の検証を行うために第三の検証者として IAS が登場
IAS : Intel Attestation Service
検証の大まかなフロー
ISV が SP に楕円曲線暗号の公開鍵と CPU 情報を送る
SP は受け取った公開鍵を自分の秘密鍵と組み合わせて共通鍵を取得
SP は ISV の CPU 情報を IAS に送り検証してもらう
SP は IAS からの検証結果を自分の公開鍵と共に改竄できない形で ISV に送信
ISV は検証結果を SGX の信頼可能なライブラリで検証し RA が続行できるかをチェック
続行可能ならば ISV も共通鍵を取得
Enclave 情報を SP 経由で IAS に検証してもらう
SP は検証結果に基づき ISV の CPU と Enclave を信用するかどうかを判断する
https://gyazo.com/5755b9ac7cc117aa69b58a3ed9ad41d0
参考文献
Intel SGX入門 - SGX基礎知識編
Cliffford
Intel SGX - Remote Attestation概説
Cliffford